[][src]Crate flatgeobuf

FlatGeobuf is a performant binary encoding for geographic data based on flatbuffers that can hold a collection of Simple Features including circular interpolations as defined by SQL-MM Part 3.

Installation

[dependencies]
flatgeobuf = "0.3"

Reading a FlatGeobuf file

use flatgeobuf::*;

let mut filein = BufReader::new(File::open("countries.fgb")?);
let mut fgb = FgbReader::open(&mut filein)?;
fgb.select_bbox(8.8, 47.2, 9.5, 55.3)?;
while let Some(feature) = fgb.next()? {
    let props = feature.properties()?;
    println!("{}", props["name"]);
}

Zero-copy geometry reader

Geometries can be accessed by implementing the GeomProcessor trait.

use geozero::{GeomProcessor, error::Result};

struct CoordPrinter;

impl GeomProcessor for CoordPrinter {
    fn xy(&mut self, x: f64, y: f64, _idx: usize) -> Result<()> {
        println!("({} {})", x, y);
        Ok(())
    }
}

let mut coord_printer = CoordPrinter {};
let geometry = feature.geometry().unwrap();
geometry.process(&mut coord_printer, geometry_type)?;

Zero-copy feature access

Properties can be accessed by implementing the PropertyProcessor trait.

use geozero::{PropertyProcessor, ColumnValue, error::Result};

struct PropertyPrinter;

impl PropertyProcessor for PropertyPrinter {
    fn property(&mut self, i: usize, n: &str, v: &ColumnValue) -> Result<bool> {
        println!("columnidx: {} name: {} value: {:?}", i, n, v);
        Ok(false) // don't abort
    }
}

let mut prop_printer = PropertyPrinter {};
let _ = feature.process_properties(&mut prop_printer)?;

Reading FlatGeobuf via HTTP

use flatgeobuf::*;

let mut fgb = HttpFgbReader::open("https://pkg.sourcepole.ch/countries.fgb").await?;
fgb.select_bbox(8.8, 47.2, 9.5, 55.3).await?;
while let Some(feature) = fgb.next().await? {
    let props = feature.properties()?;
    println!("{}", props["name"]);
}

Structs

BufferedHttpRangeClient

HTTP client for HTTP Range requests with a buffer optimized for sequential requests

Column
ColumnArgs
ColumnBuilder
Crs
CrsArgs
CrsBuilder
Driver
Feature
FeatureArgs
FeatureBuilder
FgbFeature

Access to current feature

FgbReader

FlatGeobuf dataset reader

Geometry
GeometryArgs
GeometryBuilder
Header
HeaderArgs
HeaderBuilder
HttpDriver
HttpFgbReader

FlatGeobuf dataset HTTP reader

NodeItem

R-Tree node

PackedRTree

Packed Hilbert R-Tree

SearchResultItem

Bbox filter search result

Enums

ColumnOffset
ColumnType
CrsOffset
FeatureOffset
GeometryOffset
GeometryType
HeaderOffset

Constants

ENUM_MAX_COLUMN_TYPE
ENUM_MAX_GEOMETRY_TYPE
ENUM_MIN_COLUMN_TYPE
ENUM_MIN_GEOMETRY_TYPE
ENUM_NAMES_COLUMN_TYPE
ENUM_NAMES_GEOMETRY_TYPE
ENUM_VALUES_COLUMN_TYPE
ENUM_VALUES_GEOMETRY_TYPE
HEADER_MAX_BUFFER_SIZE
MAGIC_BYTES
VERSION

Traits

FallibleStreamingIterator

A fallible, streaming iterator.

FeatureAccess

Feature processing API

FeatureGeometry

Feature properties processing API

FeatureProperties

Feature properties processing API

Functions

calc_extent
enum_name_column_type
enum_name_geometry_type
finish_feature_buffer
finish_header_buffer
finish_size_prefixed_feature_buffer
finish_size_prefixed_header_buffer
get_root_as_feature
get_root_as_header
get_size_prefixed_root_as_feature
get_size_prefixed_root_as_header
hilbert_sort
read_geometry